diff --git a/system/libraries/Cart.php b/system/libraries/Cart.php
index 5b05974..6cc1509 100644
--- a/system/libraries/Cart.php
+++ b/system/libraries/Cart.php
@@ -282,10 +282,10 @@
 
 		// You can either update a single product using a one-dimensional array,
 		// or multiple products using a multi-dimensional one.  The way we
-		// determine the array type is by looking for a required array key named "id".
+		// determine the array type is by looking for a required array key named "rowid".
 		// If it's not found we assume it's a multi-dimensional array
 		$save_cart = FALSE;
-		if (isset($items['rowid'], $items['qty']))
+		if (isset($items['rowid']))
 		{
 			if ($this->_update($items) === TRUE)
 			{
@@ -296,7 +296,7 @@
 		{
 			foreach ($items as $val)
 			{
-				if (is_array($val) && isset($val['rowid'], $val['qty']))
+				if (is_array($val) && isset($val['rowid']))
 				{
 					if ($this->_update($val) === TRUE)
 					{
@@ -332,37 +332,38 @@
 	protected function _update($items = array())
 	{
 		// Without these array indexes there is nothing we can do
-		if ( ! isset($items['qty'], $items['rowid'], $this->_cart_contents[$items['rowid']]))
+		if ( ! isset($items['rowid'], $this->_cart_contents[$items['rowid']]))
 		{
 			return FALSE;
 		}
 
 		// Prep the quantity
-		$items['qty'] = (float) $items['qty'];
-
-		// Is the quantity zero?  If so we will remove the item from the cart.
-		// If the quantity is greater than zero we are updating
-		if ($items['qty'] == 0)
+		if ( isset($items['qty']) )
 		{
-			unset($this->_cart_contents[$items['rowid']]);
-		}
-		else
+			$items['qty'] = (float) $items['qty'];
+			// Is the quantity zero?  If so we will remove the item from the cart.
+			// If the quantity is greater than zero we are updating
+			if ($items['qty'] == 0)
+			{
+				unset($this->_cart_contents[$items['rowid']]);
+				return TRUE
+			}
+		}		
+		
+		// find updatable keys
+		$keys = array_intersect(array_keys($this->_cart_contents[$items['rowid']]), array_keys($items));
+		// if a price was passed, make sure it contains valid data
+		if (isset($items['price']))
 		{
-			// find updatable keys
-			$keys = array_intersect(array_keys($this->_cart_contents[$items['rowid']]), array_keys($items));
-			// if a price was passed, make sure it contains valid data
-			if (isset($items['price']))
-			{
-				$items['price'] = (float) $items['price'];
-			}
-
-			// product id & name shouldn't be changed
-			foreach (array_diff($keys, array('id', 'name')) as $key)
-			{
-				$this->_cart_contents[$items['rowid']][$key] = $items[$key];
-			}
+			$items['price'] = (float) $items['price'];
 		}
 
+		// product id & name shouldn't be changed
+		foreach (array_diff($keys, array('id', 'name')) as $key)
+		{
+			$this->_cart_contents[$items['rowid']][$key] = $items[$key];
+		}		
+
 		return TRUE;
 	}
 
